#ifndef INCLUDED_jax_io_JReadable
#define INCLUDED_jax_io_JReadable

#ifndef HXCPP_H
#include <hxcpp.h>
#endif

HX_DECLARE_CLASS2(jax,io,JReadable)
HX_DECLARE_CLASS2(jax,lang,JCharSequence)
namespace jax{
namespace io{


class JReadable_obj : public hx::Interface{
	public:
		typedef hx::Interface super;
		typedef JReadable_obj OBJ_;
		HX_DO_INTERFACE_RTTI;
virtual int read( ::jax::lang::JCharSequence cb)=0;
		Dynamic read_dyn();
};

#define DELEGATE_jax_io_JReadable \
virtual int read( ::jax::lang::JCharSequence cb) { return mDelegate->read(cb);}  \
virtual Dynamic read_dyn() { return mDelegate->read_dyn();}  \


template<typename IMPL>
class JReadable_delegate_ : public JReadable_obj
{
	protected:
		IMPL *mDelegate;
	public:
		JReadable_delegate_(IMPL *inDelegate) : mDelegate(inDelegate) {}
		hx::Object *__GetRealObject() { return mDelegate; }
		void __Visit(HX_VISIT_PARAMS) { HX_VISIT_OBJECT(mDelegate); }
		DELEGATE_jax_io_JReadable
};

} // end namespace jax
} // end namespace io

#endif /* INCLUDED_jax_io_JReadable */ 
